/*
 * @?: *********************************************************************
 * @Author: Weidows
 * @Date: 2022-03-16 15:14:35
 * @LastEditors: Weidows
 * @LastEditTime: 2022-03-16 15:48:35
 * @FilePath: \Blog-private\source\_posts\public-post\LeetCode\code\137.只出现一次的数字-ii.go
 * @Description:
 * @!: *********************************************************************
 */
/*
 * @lc app=leetcode.cn id=137 lang=golang
 *
 * [137] 只出现一次的数字 II
 *
 * https://leetcode-cn.com/problems/single-number-ii/description/
 *
 * algorithms
 * Medium (72.05%)
 * Likes:    821
 * Dislikes: 0
 * Total Accepted:    115.5K
 * Total Submissions: 160.2K
 * Testcase Example:  '[2,2,3,2]'
 *
 * 给你一个整数数组 nums ，除某个元素仅出现 一次 外，其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
 *
 *
 *
 * 示例 1：
 *
 *
 * 输入：nums = [2,2,3,2]
 * 输出：3
 *
 *
 * 示例 2：
 *
 *
 * 输入：nums = [0,1,0,1,0,1,99]
 * 输出：99
 *
 *
 *
 *
 * 提示：
 *
 *
 * 1
 * -2^31
 * nums 中，除某个元素仅出现 一次 外，其余每个元素都恰出现 三次
 *
 *
 *
 *
 * 进阶：你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗？
 *
 */

package main

// @lc code=start
func singleNumber(nums []int) int {
	maps := make(map[int]int)
	ret := 0

	for _, v := range nums {
		maps[v]++
	}

	for i, v := range maps {
		if v == 1 {
			ret = i
		}
	}

	return ret
}

// @lc code=end
